const { VueLoaderPlugin } = require('vue-loader')
const path = require('path');
//用于支持js兼容ie的插件，用来改变webpack的默认配置参数minimizer
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');

module.exports = {
    // mode: 'development',
     mode: 'production', 
    entry: {      
        main: ["./src/main.js"], //这个用于前端投放
        index: ["./src/index.js"] //这个用于后台
    },
    output: {
        filename: '[name].js?[hash]',
        path: path.resolve(__dirname, 'dist'),
        library: 'AdsPlace', //library指定的就是你使用require时的模块名
        libraryTarget: 'umd', //打包格式，选umd支持node和浏览器2种执行坏境
        umdNamedDefine: true,
        //解决IE 11不支持箭头函数()=>{}，关闭箭头函数
        environment:{
            arrowFunction: false,
        }
    },
    //打包后的运行支持web 和es5类型的js
    target:['web', 'es5'],
    //添加external，解决以<script>标签形式使用打包后的组件时，出现vue未定义
    externals: {
        vue: {
            root: 'Vue',
            commonjs: 'vue',
            commonjs2: 'vue',
            amd: 'vue'
        }
    },
    module: {
        rules: [ 
           {    
                test: /\.vue$/,
                loader: 'vue-loader',
                options: {                
                    hotReload: true // 关闭热重载
                }                    
            },
            /**同解析vue 到js 支持ie */
            {  
                test: /\.js$/,
                exclude: /(node_modules|bower_components)/,
                use:{
                    
                    loader: 'babel-loader?cacheDirectory',
                    options:{
                        presets:[
                            '@babel/preset-env'
                        ],
                        plugins:[
                            ['@babel/plugin-transform-runtime'],
                            ['@babel/plugin-transform-modules-commonjs']
                        ]
                    }
                }
                
            }           
        ]
    },
    resolve:{
        //告诉webpack你的类库在哪些目录中查找，必须有node_module
        modules: ["node_modules", path.resolve(__dirname, "src")],
    },
    plugins: [
        // 初始化引入的loader 插件，请确保引入这个插件！
        new VueLoaderPlugin()
    ],
    /**同解析vue 到js 支持ie */
    optimization:{
        minimizer:[
            new UglifyJsPlugin({
                sourceMap: true,
                uglifyOptions:{
                    ie8: true,
                }
            })
        ]
    }
}